0
תגובות

fb php sdk

פתח mmm ,
שלום חברים, אני משתמש בSDK של פייסבוק באתר שלי, על מנת ליצור הרשמה באמצעות פייסבוק.
אני לא מעמת מול פייסבוק את המשתמש בכל טעינת דף, אלא יוצר משתמש מהפרטים שקיבלתי בפעם הראשונה מפייסבוק, על מנת להאיץ את מהירות טעינת הדף.
בעת התחברות לאתר, נעשה שימוש חד פעמי בחיבור לפייסבוק על נת לעמת את המשתמש מול המסד, ולהגדיר קוקי מתאים.
העניין הוא שהSDK של פייסבוק עובד לי ממש ל א ט..
לפי כמות האזכורים ברשת אני מבין שזו בעיה ידועה.
הקוד שלי:

<?php
  include 'cl.php';
  require_once('fb/src/facebook.php');
  include('uf.php');
  $facebook = new Facebook(array(
    'appId'  => 'xxxx',
    'secret' => 'xxxx'
  ));

  $user = $facebook->getUser();

  if ($user) {
    $user_profile = $facebook->api('/me');
    try {
     
      $first = sec($user_profile['first_name']);
      $last = sec($user_profile['last_name']);
      $mail = sec($user_profile['email']);
      $birthDate = explode("/", sec($user_profile['birthday']));
      $birth = $birthDate[2].'-'.$birthDate[0].'-'.$birthDate[1];
      $age = sec($birth);
      $id = sec($user_profile['id']);
      $password = 'fb';
      if($user_profile['gender'] == 'male') {
        $gender = 1;
      } elseif($user_profile['gender'] == 'female') {
        $gender = 2;
      }
      $sessionU = '';
      setcookie('u', $sessionU, time()+2602000);
     
      if($login == 1) {
        if(!preg_match('#/fb-#Ui', $personalIMG)) {
          $fileName = 'fb-xxxxx.jpg';
          uploadFiles('http://graph.facebook.com/'.$user_profile['id'].'/picture?type=large', $fileName);
          $imgforq = ", `img` = '$fileName'";
        } else {
          $imgforq = '';
        }
       
        mysqli_query($link, "UPDATE `users` SET `f-name` = '$first', `l-name` = '$last', `birth` = '$age', `fb` = '$id', `lastcookie` = '$sessionU', `gender` = '$gender'$imgforq WHERE `username` = '$uName'") or die(mysqli_error($link));
      } else {
        $cife = mysqli_query($link, "SELECT `fb`, `img` FROM `users` WHERE `fb` = '$id'") or die(mysqli_error($link));
        $imgres = mysqli_fetch_assoc($cife) or die(1234);
        $nrfc = mysqli_num_rows($cife);
        if($nrfc != 0) {
          if(!preg_match('#fb-#Ui', $imgres['img'])) {
            $fileName = 'fb-xxxxxxxxx.jpg';
            uploadFiles('http://graph.facebook.com/'.$user_profile['id'].'/picture?type=large', $fileName);
            $imgforq = ", `img` = '$fileName'";
          } else {
            $imgforq = '';
          }
         
          mysqli_query($link, "UPDATE `users` SET `f-name` = '$first', `l-name` = '$last', `birth` = '$age', `fb` = '$id', `lastcookie` = '$sessionU', `gender` = '$gender'$imgforq WHERE `fb` = '$id'") or die(mysqli_error($link));
        } else {
          $fileName = 'fb-xxxxxxxxxx.jpg';
          uploadFiles('http://graph.facebook.com/'.$user_profile['id'].'/picture?type=large', $fileName);
          mysqli_query($link, "INSERT INTO `users` (`username`, `f-name`, `l-name`, `mail`, `birth`, `password`, `time`, `gender`, `fb`, `lastcookie`, `img`) VALUES ('fb-$id', '$first', '$last', '$mail', '$age', '$password', '".time()."', '$gender', '$id', '$sessionU', '$fileName')") or die(mysqli_error($link));
          header('Location: msg.php?id=1&redirect=home');
          die();
        }
      }
    } catch(FacebookApiException $e) {
      $login_url = $facebook->getLoginUrl(array(
        'scope' => 'publish_stream'
      ));
      echo 'Please <a href="' . $login_url . '">login.</a>';
      error_log($e->getType());
      error_log($e->getMessage());
    }
   
    if(isset($_SERVER['HTTP_REFERER'])) {
      header('Location: '.$_SERVER['HTTP_REFERER']);
    } else {
      header('Location: index.php');
    }
  }
  else if (!$user) {
    $loginUrl = $facebook->getLoginUrl(
      array(
        'scope' => 'email,publish_actions,publish_stream,user_birthday,user_about_me'
      )
    );
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
    die();
  }


סורי על הספגטי, הקוד נכתב ממש מהר.

למישהו יש רעיון כלשהו? הקוד עובד ממש לאט, ולפעמים לא עובד בכלל.

0 תשובות